package com.dhecp.project.system.service;

import java.util.List;
import java.util.Map;
import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.core.layui.TreeDataModel;
import com.dhecp.core.layui.TreeSelectDataModel;
import com.dhecp.project.system.domain.SysDataFolder;

/**
 * 资料文件夹
 * @author DH-Xxj
 * @version 2019年9月19日
 */
public interface SysDataFolderService {

	/**
	 * 通过guid查询单条记录
	 * @param guid
	 * @return DataFolder
	 * @author DH-Xxj
	 */
	SysDataFolder queryDataFolderByGuid(String guid);

	/**
	 * 直接查询资料文件夹表的数据
	 * @param params
	 * @return List-DataFolder
	 * @author DH-Xxj
	 */
	List<SysDataFolder> queryDataFolder(Map<String, Object> params) throws Exception;

	/**
	 * 查询调入资料文件夹对象
	 * @param params
	 * @return List - DataFolder
	 * @author DH-Xxj
	 * @throws Exception 
	 */
	List<SysDataFolder> queryDataFolderObject(Map<String, Object> params) throws Exception;	
	
	/**
	 * 部门列表
	 * @param params
	 * @return List-DataFolder
	 * @author kimiloo
	 */
	List<SysDataFolder> queryDeptInfo(Map<String, Object> params) throws Exception;

	/**
	 * 获取资料文件夹树
	 * @param params
	 * @return List-TreeDataModel
	 * @author DH-Xxj
	 */
	List<TreeDataModel> queryDataFolderTree(Map<String, Object> params);

	/**
	 * 获取资料文件夹树（含复选框）
	 * @param params
	 * @return List-TreeSelectDataModel
	 * @author DH-Xxj
	 */
	List<TreeSelectDataModel> queryDataFolderTreeSelect(Map<String, Object> params);

	/**
	 * 获取排除用户的资料文件夹树（含复选框）
	 * @param params
	 * @return List-TreeSelectDataModel
	 * @author DH-Xxj
	 */
	List<TreeSelectDataModel> queryDataFolderTreeSelectNoUser(Map<String, Object> params);
	
	/**
	 * 新增文件夹节点（公司、部门）
	 * @param params
	 * 		必要参数：pguid（上级文件夹唯一值guid，顶级默认值（'root'））
	 * 		必要参数：folderName（新增文件夹名称）
	 * @return MessageModel
	 * @author DH-Xxj
	 * @throws Exception 
	 */
	AjaxResult insertDataFolder(Map<String, Object> params) throws Exception;

	/**
	 * 分配管理者
     * @param guid 必要参数： 要分配管理者的文件夹唯一值
     * @param userList 必要参数：对应实体类的json格式字符串(orgid:用户编号)
	 * @return MessageModel
	 * @throws Exception
	 * @author DH-Xxj
	 */
	AjaxResult insertOrgManagersByGuid(Map<String, Object> params) throws Exception;
	
	/**
	 * 通过orgPathAll删除文件夹及其子树
	 * @param params
	 * 		必要参数：orgPathAll（要删除的文件夹全路径）
	 * @return MessageModel
	 * @throws Exception
	 * @author DH-Xxj
	 */
	AjaxResult deleteSubtreeByOrgPathAll(Map<String, Object> params) throws Exception;

	/**
	 * 删除管理者
	 * @param params
	 * 		必要参数：guid（要删除管理者的文件夹唯一值） 
	 * 		必要参数：orgid（要删除的管理者用户编号）
	 * @return MessageModel
	 * @throws Exception
	 * @author DH-Xxj
	 */
	AjaxResult deleteOrgManagersByGuid(Map<String, Object> params) throws Exception;

	/**
	 * 通过guid修改文件夹名称
	 * @param params
	 * 		必要参数：guid（要修改的文件夹唯一值） 
	 * 		必要参数：folderName（修改后的文件夹名称）
	 * @return MessageModel
	 * @throws Exception
	 * @author DH-Xxj
	 */
	AjaxResult updateFolderNameByGuid(Map<String, Object> params) throws Exception;

	/**
	 * 通过guid修改文件夹行号
	 * @param params
	 * 		必要参数：guid（要修改的文件夹唯一值） 
	 * 		必要参数：iid（修改后的行号）
	 * @return MessageModel
	 * @throws Exception
	 * @author DH-Xxj
	 */
	AjaxResult updateIidByGuid(Map<String, Object> params) throws Exception;

}